home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="UTF-8"?>
- <effectlet>
- <info>
- <name>Orbit Effect Script</name>
- <author>Dreadnaut</author>
- <notes><![CDATA[ For bugs or anything else, contact me at dreadnaut@despammed.com ]]></notes>
- <version>0.0.6</version>
- </info>
- <settings>
- <param name="Debug" type="Boolean" defval="False"/>
- </settings>
-
- <preferences>
-
- <preference name="HorizontalRadius" type="range" defval="100" min="0" max="1000">
- Half-length of the ellipse horizontal axis
- </preference>
- <preference name="VerticalRadius" type="range" defval="100" min="0" max="1000">
- Half-length of the ellipse vertical axis
- </preference>
- <preference name="RevolutionsPerDay" type="range" defval="1440" min="1" max="8640">
- Number of orbits completed in a day:
- 1 - one revolution per day
- 24 - one revolution per hour
- 1440 - one revolution per minute
- 8640 - one revolution every 10 seconds
- </preference>
- <preference name="AngularResolution" type="range" defval="180" min="3" max="2880">
- Number of step to complete a revolution - i.e. smoothness of the animation
- </preference>
- <preference name="StartPosition" type="range" defval="0" min="0" max="359">
- The desklet will start from this angular position when loaded
- </preference>
- <preference name="xExtraPrecision" type="range" defval="10000" min="0" max="10000">
- Extra setting for fine tuning of the revolution speed: 10000 means 100% of the RevolutionsPerDay speed.
- e.g. 9649 and 1 revolution per day gives you a lunar day (24h 50m 30s)
- </preference>
- <preference name="option_RotateDesklet" type="range" defval="0" min="0" max="1">
- Rotate the desklet while moving along its orbit. Will eat a lot of CPU :)
- </preference>
-
- </preferences>
-
- <images>
- </images>
-
- <script engine="vbScript"><![CDATA[
-
- Dim StartTop, StartLeft, StepPosition, StepDegree
- Dim TickRate
- Dim PrefChange
- Dim RadConv
- Dim newx,newy
-
- 'These routines are the optional ones called by the framework
- Sub OnCreate()
- 'Init
- StartTop = Desklet.top
- StartLeft = Desklet.left
- RadConv = (4 * Atn(1)) / 180
- Reset()
-
- 'Default preferences
- HorizontalRadius = 100
- VerticalRadius = 100
- RevolutionsPerDay = 1440
- AngularResolution = 180
- StartPosition = 0
- xExtraPrecision = 10000
-
- 'And Reading overwrites them with some previous user changes
- Preferences.ReadAll()
-
- 'StepPosition = StartPosition * 360 / AngularResolution
- Evaluate()
-
- Ticker.enabled = true
- End Sub
-
- Sub OnMouseOn()
- if Ticker.Enabled = false Then Ticker.Enabled = true
- End Sub
-
- Sub OnMouseout()
- End Sub
-
- 'Function OnBeforeDraw(IsMouseOn, IsSelected, IsPreview)
- 'End Function
-
- 'Function OnAfterDraw(IsMouseOn, IsSelected, IsPreview)
- 'End Function
-
- Sub OnSave()
- Preferences.SaveAll
- End Sub
-
- 'Optional. Indicates a preference change
- Function OnPreferenceChange(Preference, oldValue, newValue)
- Reset()
- PrefChange = true
- Ticker.Interval = 500
- Ticker.Enabled = true
- End Function
-
- Sub Reset()
- Ticker.Enabled = false
- Desklet.move StartLeft, StartTop
- Desklet.rotation = 0
- End Sub
-
- Sub Evaluate()
- TickRate = cint(86400000 / AngularResolution / RevolutionsPerDay / xExtraPrecision * 10000)
- Ticker.Interval = TickRate
- StepPosition = StartPosition * 360 / AngularResolution
- EvaluatePosition()
- PrefChange = false
- End Sub
-
- Sub EvaluatePosition()
- StepDegree = StepPosition * 360 / AngularResolution
- newx = StartLeft + cint(HorizontalRadius * cos(StepDegree * RadConv))
- newy = StartTop + cint(VerticalRadius * sin(StepDegree * RadConv))
- End Sub
-
- 'You can only have 1 Ticker per effectlet
- 'The OnTimer method is shielded against multiple entrance recursion
- Sub OnTimer()
- if PrefChange Then
- Evaluate()
- Else
- EvaluatePosition()
- End If
-
- If option_RotateDesklet = 1 Then
- Desklet.rotation = cint(StepDegree)
- Desklet.Redraw()
- End If
-
- Desklet.Move newx, newy
-
- if (StepPosition < AngularResolution - 1) Then
- StepPosition = StepPosition + 1
- Else
- StepPosition = 0
- End If
- End Sub
-
- 'Optional calls that we don't need for this script:
-
- 'Sub OnSelect()
- 'End Sub
-
- 'Sub OnDeselect()
- 'End Sub
-
- 'Sub OnShow()
- 'End Sub
-
- 'Sub OnHide()
- 'End Sub
-
- 'Sub OnConfigure()
- 'the configuration dialog with default UI for
- 'XML preferences will be shown.
- 'An additional dialog designer is on its way. It will
- 'extend the available default preferences of type:
- ' - slider, checkbox, combobox (builtin, v. 1.1, free on form with v. 1.2)
- ' - textbox, file browser, favorites URL (builtin and free on form, v. 1.2)
- ' - Any ocx (external, only free on form, v. 1.2)
- 'End Sub
-
- Sub OnStartMove()
- Reset()
- End Sub
-
- Sub OnEndMove()
- StartTop = Desklet.top
- StartLeft = Desklet.left
- EvaluatePosition()
- Ticker.Interval = TickRate
- Ticker.Enabled = true
- End Sub
-
- 'Sub OnLeftClick()
- 'End Sub
-
- 'Sub OnRightClick()
- 'End Sub
-
- Sub OnDestroy
- Reset()
- End Sub
-
-
- ]]></script>
- </effectlet>
-